#ifndef __COLOR_H__
#define __COLOR_H__

namespace Splatit {
	
/**
 * RGB Color class.
 * The RGB color model is an additive color model in which red, green, and blue light are added together in various ways to reproduce a broad array of colors.
 */
		
struct Color {
	/**
	 * Simple constructor.
	 * @param _red X value
	 * @param _green Y value
	 * @param _blue Blue value
	 * @see Color(void)
	 */
	Color(const double _red,const double _green,const double _blue, const double _alpha);
	
	/**
	* Default constructor.
	* Boost Serialization needs a default constructor
	* @see Color(const Color&)
	*/
	Color(void);
	
	/**
	 * Copy constructor.
	 */
	Color(const Color&);
	
	/**
	 * Destructor
	 */
	~Color(void);

	void show(void) const;
	
	/**
	 * Copy assignment operator.
	 */
	Color& operator=(const Color&);
	
	/**
	 * Array subscripting.
	 */
	const double operator[](const int&) const;
	
	/**
	 * Plus operation
	 */
	const Color operator+(const Color&) const;
	const Color operator-(const Color&) const;
	const Color operator*(const Color&) const;
	friend Color operator*(const Color&,const double);
	friend Color operator*(const double,const Color&);
        
	double red,green,blue,alpha;
};

}
#endif
